4.4.1 Gruppieren nach mehreren Kriterien
In der Tabelle tbl_plz sind zu den Postleitzahlen die Orte und Telefonvorwahlen abgespeichert. Wenn man diese Tabelle mit der Mitarbeitertabelle (tbl_mitarbeiter) verknüpft, können die Wohnorte der Mitarbeiter mit angezeigt werden.
Nun wollen wir wieder wissen, wie viele Mitarbeiter in einer bestimmten Position angestellt sind und die Liste soll zusätzlich noch durch die Orte gruppiert werden. Sie können sich mal kurz Gedanken darüber machen, bevor Sie auf die Lösung schauen.
[14]SELECT position AS PositionsID, COUNT(ort) AS Anzahl_Mitarbeiter, ort AS Ort
FROM tbl_mitarbeiter
NATURAL JOIN tbl_plz
GROUP BY position, ort
Wie wir an diesem Beispiel sehen, ist Gruppieren in der Bedeutung "zusammenfassen"
hier nicht die richtige Übersetzung. Es müsste eher "aufteilen"
heißen. Es werden innerhalb einer Gruppierung weitere Gruppen gebildet, indem die Position des
Mitarbeiters (hier nur die ID's von NULL
, 1, …, 7) noch einmal nach Orten gruppiert
werden. Die COUNT-Funktion berechnet uns wieder die Anzahl aller Datensätze für jede Gruppe
(im Beispiel die vorhandenen Mitarbeiter der jeweiligen Gruppe).
In dieser Abfrage können wir auch einen NATURAL JOIN
verwenden, da die beiden
Schlüssel dieselben Bezeichnungen verwenden – nämlich plz. Sie können
auch gerne mit anderen Verbundarten, wie zum Beispiel dem LEFT JOIN
experimentieren.
GROUP BY
ist nicht ganz leicht zu verstehen. Darum sollten Sie die Beispiele
selbst ausprobieren und herausfinden, was der Befehl macht.